
#ifndef AI9_LOGIC_2017_TYPEDEFENSE_H
#define AI9_LOGIC_2017_TYPEDEFENSE_H

#include "skill.h"
#include "automatic.h"
#include "Game/Game.h"
#include "base.h"
#include "Entities/actor.h"
#include <Entities/plant.h>

namespace skill{
    class Recover : public CoolDownSkill{
    public:
        explicit Recover(): CoolDownSkill(){
            this->turn = TurnName :: AttackTurn;
            this->setName("Recover");
            this->cd = RecoverCD;
        }

        virtual bool canUse(Game *g, const std::vector<std::string> &params) override;

        virtual bool use(Game *g, const std::vector<std::string> &params) override;
    };

    class ShieldingBuff: public Buff{
    public:
        int power;
        ShieldingBuff(int _power):power(_power), Buff(ShieldingLast){
            setName("ShieldingBuff");
        }
    };
    class DecAttackBuff: public Buff{
    public:
        DecAttackBuff(): Buff(ShieldingLast){
            setName("DecAttackBuff");
        }
    };

    class Shielding: public CoolDownSkill{
    public:
        explicit Shielding(): CoolDownSkill(){
            this->turn = TurnName::AuxiliaryTurn;
            this->setName("Shielding");
            this->cd = ShieldingCD;
        }

        virtual bool canUse(Game *g, const std::vector<std::string> &params) override;

        virtual bool use(Game *g, const std::vector<std::string> &params) override;
    };
}

#endif //AI9_LOGIC_2017_TYPEDEFENSE_H
